/*
 * Bomba.h
 *
 *  Created on: 22/11/2012
 *      Author: leandro
 */

#ifndef BOMBA_H_
#define BOMBA_H_

#include "../ObjetoMovible.h"
#include "../Personajes/Personaje.h"

#define TIEMPO_DETONACION 3000
#define RADIO_ALCANCE 150

class EstadoBomba {

	public:

	static const int Activado;
	static const int Explotando;
	static const int SinParticular;

	static const vector<int> acciones;
	static const vector<int> accionesParticulares;
	static const vector<string> descripcionAcciones;
	static const vector<string> descripcionAccionesParticulares;

};

class Bomba : public ObjetoMovible {

	Uint32 tiempoActivacion;
	int distanciaMinima;
	bool detenido;
	bool activarDetonacion;
	bool subirEscalera;
	bool bajarEscalera;
	bool enEscalera;
	int alturaEscalera;
	vector<Animacion*> accionesParticulares;
	int estadoParticular;
	static const int PUNTOS_SUMAR = 200;
	static const int PUNTOS_RESTAR = 250;
	bool sumo;

	public:
		Bomba(int x, int y, int maximoX, int maximoY, Orientacion orientacion);
		virtual void Actualizar(Uint32 time);
		virtual int indexEstado(int estado);
		virtual pair<idImagen_t, int> getDibujable(Uint32 time);
		int getEstadoParticular();
		void setEstadoParticular(int estado);
		virtual void MoverArriba(Uint32 deltaTime);
		virtual void MoverAbajo(int maximoX, Uint32 deltaTime);
		void setEnEscalera(bool is);
		void setAlturaEscalera(int altura);
		void caer(Uint32 deltaTime, int maximoY);
		virtual void Morir();
		void Detener();
		void Explotar(vector<ObjetoMovible*> v_personajes);
		void Activar(Uint32 time);
		void Perseguir();
		void DetectarCercania();
		void PutOnDetone();

		void addAccionParticular(int idImagen, int cuadros);
		virtual void ColisionarConPersonaje(ObjetoEstatico* personaje, int colX, int colY, int colXvieja = NULL, int colYvieja = NULL);
		virtual void ColisionarConEnemigo(ObjetoEstatico* movible, int colX, int colY, int colXvieja = NULL, int colYvieja = NULL);
};


#endif /* BOMBA_H_ */
